Skip to main content
Version: 4.3.x {testing}

Status messages

info
  • All here listed messages are multicast
  • All the values are in big-endian
warning

Payload byte position is not corresponding with byte position in transfer layer (CAN, UART, USB, bluetooth...) Before continuing, read carefully how to create a message for:

Relative units

To speed up whole communication process by reducing transfered data, some data are not transferred in foating decimal points but in relative units and range. Range is number in real units (such as Volts and Amps) sent in message Range and reference. Current range is common for all transferred currents and the voltage range is common for all transferred voltages.

How to calculate absolute value from relative units:

VMEAS = ( relative value / 32767 ) * VRANGE

If the range is specified in the message description, use that range.

note

Range examples:
Voltage and current range is constant for each voltage and current specification. If you use only one controller type. You can hardcode range.

Example:

  • esc3-sc1_24dxa0840

    • Urange = 80
    • Irange = 400
    Controller voltage rangeUrange
    60V60
    80V80
    100V100
    Controller current rangeIrange
    100A100
    400A400
    600A600

Status message - Range and reference

info

SID = 27 | multicast message

Payload byteDatatypeDescription
0-1uint16Urange - range for voltage values
2-3uint16Irange - range for current values
4-5uint16/driver/motor/Uref [V]
6-7uint16/driver/motor/Iref [A]

Status message - Driver state 1

info

SID = 26 | multicast message

Payload byteBit / DatatypeDescription
0bit 0-3/driver/enabled
0bit 4-7Driver algorithm. BLDC - bit4 enabled, VECTOR - bit5 enabled
1uint8/driver/stat
2uint8/driver/mode
3int8/driver/temp
4-5uint16/driver/limit
6-7uint16/driver/error

Status message - Driver state 2

info

SID = 36 | multicast message

Payload byteDatatypeDescription
0-1int16/driver/cmd scaled to -32767 - 32767
2-3uint16/driver/totallimit scaled to 0 - 65535
4-5uint16/driver/ptctemp [-] (no scaling)
6uint8/driver/imult scaled to 0 - 255
7uint8/driver/umult scaled to 0 - 255

Status message - Supply 1

info

SID = 28 | multicast message

Payload byteDatatypeDescription
0-1int16/driver/supply/currentf in relative units
2-3int16/driver/supply/voltage in relative units
4-7int32/driver/supply/cap in [mAh]

Status message - Motor 1

info

SID = 30 | multicast message

Payload byteDatatypeDescription
0-1int16Amplitude of motor current (q+d axis) in relative units
2-3int16/driver/motor/voltage in relative units
4-7int32/driver/motor/energy in [J]

Status message - Motor 2

info

SID = 31 | multicast message

Payload byteDatatypeDescriptionRange
0-1int16/driver/power in relative unitsUrange*Irange
2-3int16Mechanical angle [radian]3.14
4-5int16/driver/motor/rpmfint16 * 8
6-7int16/driver/motor/odo1

Status message - Motor 3

info

SID = 32 | multicast message

Payload byteDatatypeDescription
0-1int16/driver/motor/currentq in relative units (output from pid_iq)
2-3int16currentq reference (input to pid_iq)
4-5int16/driver/motor/currentd in relative units (output from pid_id)
6-7int16currentd reference (input to pid_id)

Status message - Motor 4

info

SID = 33 | multicast message

Payload byteDatatypeDescription
0-1int16Rthermistor [ohm]
2-3int16/driver/motor/mres [mohm]
4-5int16Actual motor torque [Nm] * 100
6-7int16Maximum possible torque [Nm] * 100